// Tags.cs
// 
// Copyright © 2008 David Paleino <d.paleino@gmail.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//

namespace Exiv2
{
	/// <summary>
	/// Exif tags.
	/// </summary>
	public static class Tag {
		/// <summary>
		/// Tags from the Exif.GPSInfo namespace.
		/// </summary>
		public enum GPSInfo {
			/// <summary>
			/// Indicates the version of <see cref="GPSInfoIFD" />. The version
			/// is given as 2.0.0.0. This tag is mandatory when
			/// <see cref="GPSInfo" /> tag is present. (Note: The
			/// <see cref="GPSVersionID" /> tag is given in bytes, unlike the
			/// <see cref="Photo.ExifVersion" /> tag. When the version is 2.0.0.0,
			/// the tag value is 02000000.H).
			/// </summary>
			GPSVersionID = 0x0000,
			/// <summary>
			/// Indicates whether the latitude is north or south latitude. The
			/// ASCII value 'N' indicates north latitude, and 'S' is south
			/// latitude.
			/// </summary>
			GPSLatitudeRef = 0x0001,
			/// <summary>
			/// Indicates the latitude. The latitude is expressed as three
			/// RATIONAL values giving the degrees, minutes, and seconds,
			/// respectively. When degrees, minutes and seconds are expressed,
			/// the format is dd/1,mm/1,ss/1. When degrees and minutes are used
			/// and, for example, fractions of minutes are given up to two
			/// decimal places, the format is dd/1,mmmm/100,0/1.
			/// </summary>
			GPSLatitude = 0x0002,
			/// <summary>
			/// Indicates whether the longitude is east or west longitude.
			/// ASCII 'E' indicates east longitude, and 'W' is west longitude.
			/// </summary>
			GPSLongitudeRef = 0x0003,
			/// <summary>
			/// Indicates the longitude. The longitude is expressed as three
			/// RATIONAL values giving the degrees, minutes, and seconds,
			/// respectively. When degrees, minutes and seconds are expressed,
			/// the format is ddd/1,mm/1,ss/1. When degrees and minutes are
			/// used and, for example, fractions of minutes are given up to two
			/// decimal places, the format is ddd/1,mmmm/100,0/1.
			/// </summary>
			GPSLongitude = 0x0004,
			/// <summary>
			/// Indicates the altitude used as the reference altitude. If the
			/// reference is sea level and the altitude is above sea level, 0
			/// is given. If the altitude is below sea level, a value of 1 is
			/// given and the altitude is indicated as an absolute value in the
			/// GSPAltitude tag. The reference unit is meters. Note that this
			/// tag is BYTE type, unlike other reference tags.
			/// </summary>
			GPSAltitudeRef = 0x0005,
			/// <summary>
			/// Indicates the altitude based on the reference in
			/// <see cref="GPSAltitudeRef" />. Altitude is expressed as one
			/// RATIONAL value. The reference unit is meters.
			/// </summary>
			GPSAltitude = 0x0006,
			/// <summary>
			/// Indicates the time as UTC (Coordinated Universal Time).
			/// <see cref="GPSTimeStamp"/> is expressed as three RATIONAL
			/// values giving the hour, minute, and second (atomic clock).
			/// </summary>
			GPSTimeStamp = 0x0007,
			/// <summary>
			/// Indicates the GPS satellites used for measurements. This tag
			/// can be used to describe the number of satellites, their ID
			/// number, angle of elevation, azimuth, SNR and other information
			/// in ASCII notation. The format is not specified. If the GPS
			/// receiver is incapable of taking measurements, value of the tag
			/// is set to NULL.
			/// </summary>
			GPSSatellites = 0x0008,
			/// <summary>
			/// Indicates the status of the GPS receiver when the image is
			/// recorded. "A" means measurement is in progress, and "V" means
			/// the measurement is Interoperability.
			/// </summary>
			GPSStatus = 0x0009,
			/// <summary>
			/// Indicates the GPS measurement mode. "2" means two-dimensional
			/// measurement and "3" means three-dimensional measurement is in
			/// progress.
			/// </summary>
			GPSMeasureMode = 0x000a,
			/// <summary>
			/// Indicates the GPS DOP (data degree of precision). An HDOP value
			/// is written during two-dimensional measurement, and PDOP during
			/// three-dimensional measurement.
			/// </summary>
			GPSDOP = 0x000b,
			/// <summary>
			/// Indicates the unit used to express the GPS receiver speed of
			/// movement. "K" "M" and "N" represents kilometers per hour, miles
			/// per hour, and knots.
			/// </summary>
			GPSSpeedRef = 0x000c,
			/// <summary>
			/// Indicates the speed of GPS receiver movement.
			/// </summary>
			GPSSpeed = 0x000d,
			/// <summary>
			/// Indicates the reference for giving the direction of GPS
			/// receiver movement. "T" denotes true direction and "M" is
			/// magnetic direction.
			/// </summary>
			GPSTrackRef = 0x000e,
			/// <summary>
			/// Indicates the direction of GPS receiver movement. The range of
			/// values is from 0.00 to 359.99.
			/// </summary>
			GPSTrack = 0x000f,
			/// <summary>
			/// Indicates the reference for giving the direction of the image
			/// when it is captured. "T" denotes true direction and "M" is
			/// magnetic direction.
			/// </summary>
			GPSImgDirectionRef = 0x0010,
			/// <summary>
			/// Indicates the direction of the image when it was captured. The
			/// range of values is from 0.00 to 359.99.
			/// </summary>
			GPSImgDirection = 0x0011,
			/// <summary>
			/// Indicates the geodetic survey data used by the GPS receiver. If
			/// the survey data is restricted to Japan, the value of this tag
			/// is "TOKYO" or "WGS-84".
			/// </summary>
			GPSMapDatum = 0x0012,
			/// <summary>
			/// Indicates whether the latitude of the destination point is
			/// north or south latitude. The ASCII value "N" indicates north
			/// latitude, and "S" is south latitude.
			/// </summary>
			GPSDestLatitudeRef = 0x0013,
			/// <summary>
			/// Indicates the latitude of the destination point. The latitude
			/// is expressed as three RATIONAL values giving the degrees,
			/// minutes, and seconds, respectively. If latitude is expressed as
			/// degrees, minutes and seconds, a typical format would be
			/// dd/1,mm/1,ss/1. When degrees and minutes are used and, for
			/// example, fractions of minutes are given up to two decimal
			/// places, the format would be dd/1,mmmm/100,0/1.
			/// </summary>
			GPSDestLatitude = 0x0014,
			/// <summary>
			/// Indicates whether the longitude of the destination point is
			/// east or west longitude. ASCII "E" indicates east longitude, and
			/// "W" is west longitude.
			/// </summary>
			GPSDestLongitudeRef = 0x0015,
			/// <summary>
			/// Indicates the longitude of the destination point. The longitude
			/// is expressed as three RATIONAL values giving the degrees,
			/// minutes, and seconds, respectively. If longitude is expressed
			/// as degrees, minutes and seconds, a typical format would be
			/// dd/1,mm/1,ss/1. When degrees and minutes are used and, for
			/// example, fractions of minutes are given up to two decimal
			/// places, the format would be dd/1,mmmm/100,0/1.
			/// </summary>
			GPSDestLongitude = 0x0016,
			/// <summary>
			/// Indicates the reference used for giving the bearing to the
			/// destination point. "T" denotes true direction and "M" is
			/// magnetic direction.
			/// </summary>
			GPSDestBearingRef = 0x0017,
			/// <summary>
			/// Indicates the bearing to the destination point. The range of
			/// values is from 0.00 to 359.99.
			/// </summary>
			GPSDestBearing = 0x0018,
			/// <summary>
			/// Indicates the unit used to express the distance to the
			/// destination point. "K", "M" and "N" represent kilometers, miles
			/// and knots.
			/// </summary>
			GPSDestDistanceRef = 0x0019,
			/// <summary>
			/// Indicates the distance to the destination point.
			/// </summary>
			GPSDestDistance = 0x001a,
			/// <summary>
			/// A character string recording the name of the method used for
			/// location finding. The first byte indicates the character code
			/// used, and this is followed by the name of the method.
			/// </summary>
			GPSProcessingMethod = 0x001b,
			/// <summary>
			/// A character string recording the name of the GPS area. The
			/// first byte indicates the character code used, and this is
			/// followed by the name of the GPS area.
			/// </summary>
			GPSAreaInformation = 0x001c,
			/// <summary>
			/// A character string recording date and time information relative
			/// to UTC (Coordinated Universal Time). The format is
			/// "YYYY:MM:DD.".
			/// </summary>
			GPSDateStamp = 0x001d,
			/// <summary>
			/// Indicates whether differential correction is applied to the GPS
			/// receiver.
			/// </summary>
			GPSDifferential = 0x001e
		}
		
		/// <summary>
		/// Tags from the Exif.Iop namespace.
		/// </summary>
		public enum Iop {
			/// <summary>
			/// Indicates the identification of the Interoperability rule. Use
			/// "R98" for stating ExifR98 Rules. Four bytes used including the
			/// termination code (NULL). See the separate volume of Recommended
			/// Exif Interoperability Rules (ExifR98) for other tags used for
			/// ExifR98.
			/// </summary>
			InteroperabilityIndex = 0x0001,
			/// <summary>
			/// Interoperability version.
			/// </summary>
			InteroprabilityVersion = 0x0002,
			/// <summary>
			/// File format of image file.
			/// </summary>
			RelatedImageFileFormat = 0x1000,
			/// <summary>
			/// Image width.
			/// </summary>
			RelatedImageWidth = 0x1001,
			/// <summary>
			/// Image height.
			/// </summary>
			RelatedImageLength = 0x1002
		}
		
		/// <summary>
		/// Tags from the Exif.Image namespace.
		/// </summary>
		public enum Image {
			/// <summary>
			/// The name and version of the software used to post-process the
			/// picture.
			/// </summary>
			ProcessingSoftware = 0x000b,
			/// <summary>
			/// A general indication of the kind of data contained in this
			/// subfile.
			/// </summary>
			NewSubfileType = 0x00fe,
			/// <summary>
			/// The number of columns of image data, equal to the number of
			/// pixels per row.
			/// In JPEG compressed data a JPEG marker is used instead of this
			/// tag.
			/// </summary>
			ImageWidth = 0x0100,
			/// <summary>
			/// The number of rows of image data.
			/// In JPEG compressed data a JPEG marker is used instead of this
			/// tag.
			/// </summary>
			ImageLength = 0x0101,
			/// <summary>
			/// The number of bits per image component.
			/// In this standard each component of the image is 8 bits, so the
			/// value for this tag is 8. See also <see cref="SamplesPerPixel"/>. In JPEG
			/// compressed data a JPEG marker is used instead of this tag.
			/// </summary>
			BitsPerSample = 0x0102,
			/// <summary>
			/// The compression scheme used for the image data.
			/// When a primary image is JPEG compressed, this designation is
			/// not necessary and is omitted. When thumbnails use JPEG
			/// compression, this tag value is set to 6.
			/// </summary>
			Compression = 0x0103,
			/// <summary>
			/// The pixel composition.
			/// In JPEG compressed data a JPEG marker is used instead of this
			/// tag.
			/// </summary>
			PhotometricInterpretation = 0x0106,
			/// <summary>
			/// The logical order of bits within a byte.
			/// </summary>
			FillOrder = 0x010a,
			/// <summary>
			/// The name of the document from which this image was scanned.
			/// </summary>
			DocumentName = 0x010d,
			/// <summary>
			/// A character string giving the title of the image.
			/// It may be a comment such as "1988 company picnic" or the like.
			/// Two-bytes character codes cannot be used. When a 2-bytes code
			/// is necessary, the Exif Private tag
			/// <see cref="Photo.UserComment"/> is to be used.
			/// </summary>
			ImageDescription = 0x010e,
			/// <summary>
			/// The manufacturer of the recording equipment. This is the
			/// manufacturer of the DSC, scanner, video digitizer or other
			/// equipment that generated the image. When the field is left
			/// blank, it is treated as unknown.
			/// </summary>
			Make = 0x010f,
			/// <summary>
			/// The model name or model number of the equipment. This is the
			/// model name or number of the DSC, scanner, video digitizer or
			/// other equipment that generated the image. When the field is
			/// left blank, it is treated as unknown.
			/// </summary>
			Model = 0x0110,
			/// <summary>
			/// For each strip, the byte offset of that strip. It is
			/// recommended that this be selected so the number of strip bytes
			/// does not exceed 64 Kbytes. With JPEG compressed data this
			/// designation is not needed and is omitted. See also
			/// <see cref="RowsPerStrip"/> and <see cref="StripByteCounts" />.
			/// </summary>
			StripOffsets = 0x0111,
			/// <summary>
			/// The image orientation viewed in terms of rows and columns.
			/// </summary>
			Orientation = 0x0112,
			/// <summary>
			/// The number of components per pixel. Since this standard applies
			/// to RGB and YCbCr images, the value set for this tag is 3. In
			/// JPEG compressed data a JPEG marker is used instead of this tag.
			/// </summary>
			SamplesPerPixel = 0x0115,
			/// <summary>
			/// The number of rows per strip. This is the number of rows in
			/// the image of one strip when an image is divided into strips.
			/// With JPEG compressed data this designation is not needed and
			/// is omitted. See also <see cref="StripOffsets" /> and
			/// <see cref="StripByteCounts" />.
			/// </summary>
			RowsPerStrip = 0x0116,
			/// <summary>
			/// The total number of bytes in each strip. With JPEG compressed
			/// data this designation is not needed and is omitted.
			/// </summary>
			StripByteCounts = 0x0117,
			/// <summary>
			/// The number of pixels per <see cref="ResolutionUnit" /> in the
			/// <see cref="ImageWidth" /> direction. When the image resolution
			/// is unknown, 72 [dpi] is designated.
			/// </summary>
			XResolution = 0x011a,
			/// <summary>
			/// The number of pixels per <see cref="ResolutionUnit" /> in the
			/// <see cref="ImageLength" /> direction. The same value as
			/// <see cref="XResolution" /> is designated.
			/// </summary>
			YResolution = 0x011b,
			/// <summary>
			/// Indicates whether pixel components are recorded in a chunky or
			/// planar format. In JPEG compressed files a JPEG marker is used
			/// instead of this tag. If this field does not exist, the TIFF
			/// default of 1 (chunky) is assumed.
			/// </summary>
			PlanarConfiguration = 0x011c,
			/// <summary>
			/// The unit for measuring <see cref="XResolution" /> and
			/// <see cref="YResolution" />. The same unit is used for both
			/// <see cref="XResolution" /> and <see cref="YResolution" />. If
			/// the image resolution is unknown, 2 (inches) is designated.
			/// </summary>
			ResolutionUnit = 0x0128,
			/// <summary>
			/// A transfer function for the image, described in tabular style.
			/// Normally this tag is not necessary, since color space is
			/// specified in the color space information tag
			/// (<see cref="Photo.ColorSpace" />).
			/// </summary>
			TransferFunction = 0x012d,
			/// <summary>
			/// This tag records the name and version of the software or
			/// firmware of the camera or image input device used to generate
			/// the image. The detailed format is not specified, but it is
			/// recommended that the example shown below be followed. When the
			/// field is left blank, it is treated as unknown.
			/// </summary>
			Software = 0x0131,
			/// <summary>
			/// The date and time of image creation. In Exif standard, it is
			/// the date and time the file was changed.
			/// </summary>
			DateTime = 0x0132,
			/// <summary>
			/// This tag records the name of the camera owner, photographer or
			/// image creator. The detailed format is not specified, but it is
			/// recommended that the information be written as in the example
			/// below for ease of Interoperability. When the field is left
			/// blank, it is treated as unknown.
			/// <example>"Camera owner, John Smith; Photographer, Michael
			/// Brown; Image creator, Ken James"</example>
			/// </summary>
			Artist = 0x013b,
			/// <summary>
			/// This tag records information about the host computer used to
			/// generate the image.
			/// </summary>
			HostComputer = 0x013c,
			/// <summary>
			/// The chromaticity of the white point of the image. Normally this
			/// tag is not necessary, since color space is specified in the
			/// colorspace information tag (<see cref="Photo.ColorSpace" />).
			/// </summary>
			WhitePoint = 0x013e,
			/// <summary>
			/// The chromaticity of the three primary colors of the image.
			/// Normally this tag is not necessary, since colorspace is
			/// specified in the colorspace information tag
			/// (<see cref="Photo.ColorSpace" />).
			/// </summary>
			PrimaryChromaticities = 0x013f,
			/// <summary>
			/// Defined by Adobe Corporation to enable TIFF Trees within a
			/// TIFF file.
			/// </summary>
			SubIFDs = 0x014a,
			/// <summary>
			/// Expands the range of the TransferFunction.
			/// </summary>
			TransferRange = 0x0156,
			/// <summary>
			/// This field indicates the process used to produce the compressed
			/// data.
			/// </summary>
			JPEGProc = 0x0200,
			/// <summary>
			/// The offset to the start byte (SOI) of JPEG compressed thumbnail
			/// data. This is not used for primary image JPEG data.
			/// </summary>
			JPEGInterchangeFormat = 0x0201,
			/// <summary>
			/// The number of bytes of JPEG compressed thumbnail data. This is
			/// not used for primary image JPEG data. JPEG thumbnails are not
			/// divided but are recorded as a continuous JPEG bitstream from
			/// SOI to EOI. Appn and COM markers should not be recorded.
			/// Compressed thumbnails must be recorded in no more than 64
			/// Kbytes, including all other data to be recorded in APP1.
			/// </summary>
			JPEGInterchangeFormatLength = 0x0202,
			/// <summary>
			/// The matrix coefficients for transformation from RGB to YCbCr
			/// image data. No default is given in TIFF; but here the value
			/// given in Appendix E, "Color Space Guidelines", is used as the
			/// default. The color space is declared in a color space
			/// information tag, with the default being the value that gives
			/// the optimal image characteristics Interoperability this
			/// condition.
			/// </summary>
			YCbCrCoefficients = 0x0211,
			/// <summary>
			/// The sampling ratio of chrominance components in relation to the
			/// luminance component. In JPEG compressed data a JPEG marker is
			/// used instead of this tag.
			/// </summary>
			YCbCrSubSampling = 0x0212,
			/// <summary>
			/// The position of chrominance components in relation to the
			/// luminance component. This field is designated only for JPEG
			/// compressed data or uncompressed YCbCr data. The TIFF default is
			/// 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in
			/// this standard that 2 (co-sited) be used to record data, in
			/// order to improve the image quality when viewed on TV systems.
			/// When this field does not exist, the reader shall assume the
			/// TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default
			/// (centered) is recommended. If the reader does not have the
			/// capability of supporting both kinds of
			/// <see cref="YCbCrPositioning" />, it shall follow the TIFF
			/// default regardless of the value in this field. It is preferable
			/// that readers be able to support both centered and co-sited
			/// positioning.
			/// </summary>
			YCbCrPositioning = 0x0213,
			/// <summary>
			/// The reference black point value and reference white point
			/// value. No defaults are given in TIFF, but the values below are
			/// given as defaults here. The color space is declared in a color
			/// space information tag, with the default being the value that
			/// gives the optimal image characteristics Interoperability these
			/// conditions.
			/// </summary>
			ReferenceBlackWhite = 0x0214,
			/// <summary>
			/// XMP Metadata (Adobe technote 9-14-02).
			/// </summary>
			XMLPacket = 0x02bc,
			/// <summary>
			/// Rating tag used by Windows.
			/// </summary>
			Rating = 0x4746,
			/// <summary>
			/// Rating tag used by Windows, value in percent.
			/// </summary>
			RatingPercent = 0x4749,
			/// <summary>
			/// Contains two values representing the minimum rows and columns
			/// to define the repeating patterns of the color filter array.
			/// </summary>
			CFARepeatPatternDim = 0x828d,
			/// <summary>
			/// Indicates the color filter array (CFA) geometric pattern of the
			/// image sensor when a one-chip color area sensor is used. It does
			/// not apply to all sensing methods.
			/// </summary>
			CFAPattern = 0x828e,
			/// <summary>
			/// Contains a value of the battery level as a fraction or string.
			/// </summary>
			BatteryLevel = 0x828f,
			/// <summary>
			/// Copyright information. In this standard the tag is used to
			/// indicate both the photographer and editor copyrights. It is the
			/// copyright notice of the person or organization claiming rights
			/// to the image. The Interoperability copyright statement
			/// including date and rights should be written in this field:
			/// <example>Copyright, John Smith, 19xx. All rights reserved.</example>
			/// In this standard the field records both the photographer and
			/// editor copyrights, with each recorded in a separate part of the
			/// statement. When there is a clear distinction between the
			/// photographer and editor copyrights, these are to be written in
			/// the order of photographer followed by editor copyright,
			/// separated by NULL (in this case since the statement also ends
			/// with a NULL, there are two NULL codes). When only the
			/// photographer copyright is given, it is terminated by one NULL
			/// code. When only the editor copyright is given, the photographer
			/// copyright part consists of one space followed by a terminating
			/// NULL code, then the editor copyright is given. When the field
			/// is left blank, it is treated as unknown.
			/// </summary>
			Copyright = 0x8298,
			/// <summary>
			/// Contains an IPTC/NAA record.
			/// </summary>
			IPTCNAA = 0x83bb,
			/// <summary>
			/// Contains information embedded by the Adobe Photoshop
			/// application.
			/// </summary>
			ImageResources = 0x8649,
			/// <summary>
			/// A pointer to the Exif IFD. Interoperability, Exif IFD has the
			/// same structure as that of the IFD specified in TIFF.
			/// Ordinarily, however, it does not contain image data as in the
			/// case of TIFF.
			/// </summary>
			ExifTag = 0x8769,
			/// <summary>
			/// Contains an InterColor Consortium (ICC) format color space
			/// characterization/profile.
			/// </summary>
			InterColorProfile = 0x8773,
			/// <summary>
			/// A pointer to the GPS Info IFD. The Interoperability structure
			/// of the GPS Info IFD, like that of Exif IFD, has no image data.
			/// </summary>
			GPSTag = 0x8825,
			/// <summary>
			/// Contains four ASCII characters representing the TIFF/EP
			/// standard version of a TIFF/EP file, <example>'1', '0', '0',
			/// '0'</example>
			/// </summary>
			TIFFEPStandardID = 0x9216,
			/// <summary>
			/// Title tag used by Windows, encoded in UCS2.
			/// </summary>
			XPTitle = 0x9c9b,
			/// <summary>
			/// Comment tag used by Windows, encoded in UCS2.
			/// </summary>
			XPComment = 0x9c9c,
			/// <summary>
			/// Author tag used by Windows, encoded in UCS2.
			/// </summary>
			XPAuthor = 0x9c9d,
			/// <summary>
			/// Keywords tag used by Windows, encoded in UCS2.
			/// </summary>
			XPKeywords = 0x9c9e,
			/// <summary>
			/// Subject tag used by Windows, encoded in UCS2.
			/// </summary>
			XPSubject = 0x9c9f,
			/// <summary>
			/// Print Image Matching, description needed.
			/// </summary>
			PrintImageMatching = 0xc4a5
		}
		
		/// <summary>
		/// Tags from the Exif.Photo namespace.
		/// </summary>
		public enum Photo {
			/// <summary>
			/// Exposure time, given in seconds (sec).
			/// </summary>
			ExposureTime = 0x829a,
			/// <summary>
			/// The F number.
			/// </summary>
			FNumber = 0x829d,
			/// <summary>
			/// The class of the program used by the camera to set exposure
			/// when the picture is taken.
			/// </summary>
			ExposureProgram = 0x8822,
			/// <summary>
			/// Indicates the spectral sensitivity of each channel of the
			/// camera used. The tag value is an ASCII string compatible with
			/// the standard developed by the ASTM Technical Committee.
			/// </summary>
			SpectralSensitivity = 0x8824,
			/// <summary>
			/// Indicates the ISO Speed and ISO Latitude of the camera or input
			/// device as specified in ISO 12232.
			/// </summary>
			ISOSpeedRatings = 0x8827,
			/// <summary>
			/// Indicates the Opto-Electoric Conversion Function (OECF)
			/// specified in ISO 14524. <see cref="OECF" /> is the relationship
			/// between the camera optical input and the image values.
			/// </summary>
			OECF = 0x8828,
			/// <summary>
			/// The version of this standard supported. Nonexistence of this
			/// field is taken to mean nonconformance to the standard.
			/// </summary>
			ExifVersion = 0x9000,
			/// <summary>
			/// The date and time when the original image data was generated.
			/// For a digital still camera the date and time the picture was
			/// taken are recorded.
			/// </summary>
			DateTimeOriginal = 0x9003,
			/// <summary>
			/// The date and time when the image was stored as digital data.
			/// </summary>
			DateTimeDigitized = 0x9004,
			/// <summary>
			/// Information specific to compressed data. The channels of each
			/// component are arranged in order from the 1st component to the
			/// 4th. For uncompressed data the data arrangement is given in
			/// the <see cref="Image.PhotometricInterpretation" /> tag. However,
			/// since <see cref="Image.PhotometricInterpretation" /> can only
			/// express the order of Y, Cb and Cr, this tag is provided for
			/// cases when compressed data uses components other than Y, Cb,
			/// and Cr and to enable support of other sequences.
			/// </summary>
			ComponentsConfiguration = 0x9101,
			/// <summary>
			/// Information specific to compressed data. The compression mode
			/// used for a compressed image is indicated in unit bits per pixel.
			/// </summary>
			CompressedBitsPerPixel = 0x9102,
			/// <summary>
			/// Shutter speed. The unit is the APEX (Additive System of
			/// Photographic Exposure) setting.
			/// </summary>
			ShutterSpeedValue = 0x9201,
			/// <summary>
			/// The lens aperture. The unit is the APEX value.
			/// </summary>
			ApertureValue = 0x9202,
			/// <summary>
			/// The value of brightness. The unit is the APEX value. Ordinarily
			/// it is given in the range of -99.99 to 99.99.
			/// </summary>
			BrightnessValue = 0x9203,
			/// <summary>
			/// The exposure bias. The units is the APEX value. Ordinarily it
			/// is given in the range of -99.99 to 99.99.
			/// </summary>
			ExposureBiasValue = 0x9204,
			/// <summary>
			/// The smallest F number of the lens. The unit is the APEX value.
			/// Ordinarily it is given in the range of 00.00 to 99.99, but it
			/// is not limited to this range.
			/// </summary>
			MaxApertureValue = 0x9205,
			/// <summary>
			/// The distance to the subject, given in meters.
			/// </summary>
			SubjectDistance = 0x9206,
			/// <summary>
			/// The metering mode.
			/// </summary>
			MeteringMode = 0x9207,
			/// <summary>
			/// The kind of light source.
			/// </summary>
			LightSource  = 0x9208,
			/// <summary>
			/// This tag is recorded when an image is taken using a strobe
			/// light (flash).
			/// </summary>
			Flash = 0x9209,
			/// <summary>
			/// The actual focal length of the lens, in mm. Conversion is not
			/// made to the focal length of a 35 mm film camera.
			/// </summary>
			FocalLength = 0x920a,
			/// <summary>
			/// This tag indicates the location and area of the main subject in
			/// the overall scene.
			/// </summary>
			SubjectArea = 0x9214,
			/// <summary>
			/// A tag for manufacturers of Exif writers to record any desired
			/// information. The contents are up to the manufacturer.
			/// </summary>
			MakerNote = 0x927c,
			/// <summary>
			/// A tag for Exif users to write keywords or comments on the image
			/// besides those in <see cref="Image.ImageDescription" />, and
			/// without the character code limitations of the
			/// <see cref="Image.ImageDescription" /> tag.
			/// </summary>
			UserComment = 0x9286,
			/// <summary>
			/// A tag used to record fractions of seconds for the
			/// <see cref="Image.DateTime" /> tag.
			/// </summary>
			SubSecTime = 0x9290,
			/// <summary>
			/// A tag used to record fractions of seconds for the
			/// <see cref="DateTimeOriginal" /> tag.
			/// </summary>
			SubSecTimeOriginal = 0x9291,
			/// <summary>
			/// A tag used to record fractions of seconds for the
			/// <see cref="DateTimeDigitized" /> tag.
			/// </summary>
			SubSecTimeDigitized = 0x9292,
			/// <summary>
			/// The FlashPix format version supported by a FPXR file.
			/// </summary>
			FlashpixVersion = 0xa000,
			/// <summary>
			/// The color space information tag is always recorded as the color
			/// space specifier. Normally sRGB is used to define the color
			/// space based on the PC monitor conditions and environment. If a
			/// color space other than sRGB is used, Uncalibrated is set. Image
			/// data recorded as Uncalibrated can be treated as sRGB when it is
			/// converted to FlashPix.
			/// </summary>
			ColorSpace = 0xa001,
			/// <summary>
			/// Information specific to compressed data. When a compressed file
			/// is recorded, the valid width of the meaningful image must be
			/// recorded in this tag, whether or not there is padding data or a
			/// restart marker. This tag should not exist in an uncompressed
			/// file.
			/// </summary>
			PixelXDimension = 0xa002,
			/// <summary>
			/// Information specific to compressed data. When a compressed file
			/// is recorded, the valid height of the meaningful image must be
			/// recorded in this tag, whether or not there is padding data or a
			/// restart marker. This tag should not exist in an uncompressed
			/// file. Since data padding is unnecessary in the vertical
			/// direction, the number of lines recorded in this valid image
			/// height tag will in fact be the same as that recorded in the SOF.
			/// </summary>
			PixelYDimension = 0xa003,
			/// <summary>
			/// This tag is used to record the name of an audio file related to
			/// the image data. The only relational information recorded here
			/// is the Exif audio file name and extension (an ASCII string
			/// consisting of 8 characters + '.' + 3 characters). The path is
			/// not recorded.
			/// </summary>
			RelatedSoundFile = 0xa004,
			/// <summary>
			/// Interoperability IFD is composed of tags which stores the
			/// information to ensure the Interoperability and pointed by the
			/// following tag located in Exif IFD. The Interoperability
			/// structure of Interoperability IFD is the same as TIFF defined
			/// IFD structure but does not contain the image data
			/// characteristically compared with normal TIFF IFD.
			/// </summary>
			InteroperabilityTag = 0xa005,
			/// <summary>
			/// Indicates the strobe energy at the time the image is captured,
			/// as measured in Beam Candle Power Seconds (BCPS).
			/// </summary>
			FlashEnergy = 0xa20b,
			/// <summary>
			/// This tag records the camera or input device spatial frequency
			/// table and SFR values in the direction of image width, image
			/// height, and diagonal direction, as specified in ISO 12233.
			/// </summary>
			SpatialFrequencyResponse = 0xa20c,
			/// <summary>
			/// Indicates the number of pixels in the image width (X) direction
			/// per <see cref="FocalPlaneResolutionUnit" /> on the camera focal
			/// plane.
			/// </summary>
			FocalPlaneXResolution = 0xa20e,
			/// <summary>
			/// Indicates the number of pixels in the image width (Y) direction
			/// per <see cref="FocalPlaneResolutionUnit" /> on the camera focal
			/// plane.
			/// </summary>
			FocalPlaneYResolution = 0xa20f,
			/// <summary>
			/// Indicates the unit for measuring
			/// <see cref="FocalPlaneXResolution" /> and
			/// <see cref="FocalPlaneYResolution" />. This value is the same as
			/// the <see cref="Image.ResolutionUnit" />.
			/// </summary>
			FocalPlaneResolutionUnit = 0xa210,
			/// <summary>
			/// Indicates the location of the main subject in the scene. The
			/// value of this tag represents the pixel at the center of the
			/// main subject relative to the left edge, prior to rotation
			/// processing as per the <see cref="Rotation" /> tag. The first
			/// value indicates the X column number and second indicates the Y
			/// row number.
			/// </summary>
			SubjectLocation = 0xa214,
			/// <summary>
			/// Indicates the exposure index selected on the camera or input
			/// device at the time the image is captured.
			/// </summary>
			ExposureIndex = 0xa215,
			/// <summary>
			/// Indicates the image sensor type on the camera or input device.
			/// </summary>
			SensingMethod = 0xa217,
			/// <summary>
			/// Indicates the image source. If a DSC recorded the image, this
			/// tag value of this tag always be set to 3, indicating that the
			/// image was recorded on a DSC.
			/// </summary>
			FileSource = 0xa300,
			/// <summary>
			/// Indicates the type of scene. If a DSC recorded the image, this
			/// tag value must always be set to 1, indicating that the image
			/// was directly photographed.
			/// </summary>
			SceneType = 0xa301,
			/// <summary>
			/// Indicates the color filter array (CFA) geometric pattern of the
			/// image sensor when a one-chip color area sensor is used. It does
			/// not apply to all sensing methods.
			/// </summary>
			CFAPattern = 0xa302,
			/// <summary>
			/// This tag indicates the use of special processing on image data,
			/// such as rendering geared to output. When special processing is
			/// performed, the reader is expected to disable or minimize any
			/// further processing.
			/// </summary>
			CustomRendered = 0xa401,
			/// <summary>
			/// This tag indicates the exposure mode set when the image was
			/// shot. In auto-bracketing mode, the camera shoots a series of
			/// frames of the same scene at different exposure settings.
			/// </summary>
			ExposureMode = 0xa402,
			/// <summary>
			/// This tag indicates the white balance mode set when the image
			/// was shot.
			/// </summary>
			WhiteBalance = 0xa403,
			/// <summary>
			/// This tag indicates the digital zoom ratio when the image was
			/// shot. If the numerator of the recorded value is 0, this
			/// indicates that digital zoom was not used.
			/// </summary>
			DigitalZoomRatio = 0xa404,
			/// <summary>
			/// This tag indicates the equivalent focal length assuming a 35mm
			/// film camera, in mm. A value of 0 means the focal length is
			/// unknown. Note that this tag differs from the
			/// <see cref="FocalLength" /> tag.
			/// </summary>
			FocalLengthIn35mmFilm = 0xa405,
			/// <summary>
			/// This tag indicates the type of scene that was shot. It can also
			/// be used to record the mode in which the image was shot. Note
			/// that this differs from the <see cref="SceneType" /> tag.
			/// </summary>
			SceneCaptureType = 0xa406,
			/// <summary>
			/// This tag indicates the degree of overall image gain adjustment.
			/// </summary>
			GainControl = 0xa407,
			/// <summary>
			/// This tag indicates the direction of contrast processing applied
			/// by the camera when the image was shot.
			/// </summary>
			Contrast = 0xa408,
			/// <summary>
			/// This tag indicates the direction of saturation processing
			/// applied by the camera when the image was shot.
			/// </summary>
			Saturation = 0xa409,
			/// <summary>
			/// This tag indicates the direction of sharpness processing
			/// applied by the camera when the image was shot.
			/// </summary>
			Sharpness = 0xa40a,
			/// <summary>
			/// This tag indicates information on the picture-taking conditions
			/// of a particular camera model. The tag is used only to indicate
			/// the picture-taking conditions in the reader.
			/// </summary>
			DeviceSettingDescription = 0xa40b,
			/// <summary>
			/// This tag indicates the distance to the subject.
			/// </summary>
			SubjectDistanceRange = 0xa40c,
			/// <summary>
			/// This tag indicates an identifier assigned uniquely to each
			/// image. It is recorded as an ASCII string equivalent to
			/// hexadecimal notation and 128-bit fixed length.
			/// </summary>
			ImageUniqueID = 0xa420
		}
	}
}